JDBC (Java Database Connectivity) হল Java-তে ডেটাবেজের সাথে যোগাযোগ করার জন্য একটি API, যা ডেটাবেজ থেকে ডেটা নিয়ে আসা, ডেটা আপডেট করা, ইনসার্ট করা এবং ডিলিট করার জন্য ব্যবহৃত হয়। H2 ডেটাবেজে JDBC ব্যবহার করে আপনি সহজেই Java অ্যাপ্লিকেশন থেকে ডেটাবেজের সাথে ইন্টারঅ্যাক্ট করতে পারেন।
এই টিউটোরিয়ালে আমরা JDBC ব্যবহার করে H2 ডেটাবেজ এর বিভিন্ন কার্যকলাপ, যেমন ডেটাবেজে সংযোগ স্থাপন, কুয়েরি এক্সিকিউট করা, এবং ফলাফল পড়া দেখাব।
JDBC ব্যবহার করে H2 ডেটাবেজে সংযোগ স্থাপন করার জন্য প্রথমে আপনাকে H2 ড্রাইভার প্রয়োজন হবে। H2 ড্রাইভার সাধারণত .jar
ফাইল হিসেবে সরবরাহ করা হয়, যা আপনার প্রোজেক্টে যোগ করতে হবে।
H2 JDBC ড্রাইভার .jar
ফাইল ডাউনলোড করতে H2 Official Website থেকে ডাউনলোড করুন এবং আপনার Java প্রোজেক্টে এটিকে যোগ করুন।
এখানে একটি সাধারণ উদাহরণ দেওয়া হলো, যেখানে আমরা H2 ডেটাবেজে JDBC ব্যবহার করে সংযোগ স্থাপন করব, কুয়েরি এক্সিকিউট করব এবং ফলাফল বের করব।
import java.sql.*;
public class H2JDBCExample {
public static void main(String[] args) {
// H2 ডেটাবেজের URL, ইউজারনেম, এবং পাসওয়ার্ড
String url = "jdbc:h2:~/test"; // ~ মানে হোম ডিরেক্টরি
String user = "sa"; // ডিফল্ট ইউজারনেম
String password = ""; // ডিফল্ট পাসওয়ার্ড
try {
// ডেটাবেজে সংযোগ স্থাপন
Connection conn = DriverManager.getConnection(url, user, password);
// SQL কুয়েরি তৈরি করা
String sql = "SELECT * FROM employees"; // ধরুন employees টেবিল আছে
// কুয়েরি এক্সিকিউট করা
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
// ফলাফল প্রদর্শন করা
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
}
// সংযোগ বন্ধ করা
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
এখানে:
DriverManager.getConnection()
: এটি H2 ডেটাবেজের সাথে সংযোগ স্থাপন করার জন্য ব্যবহার করা হয়।Statement
: SQL কুয়েরি এক্সিকিউট করার জন্য ব্যবহার করা হয়।ResultSet
: SQL কুয়েরি থেকে প্রাপ্ত ডেটা ধারণ করে এবং সেই ডেটা অ্যাক্সেস করতে ব্যবহৃত হয়।JDBC-এ SQL কুয়েরি চালাতে Statement
বা PreparedStatement
ব্যবহার করা হয়। এখানে Statement
ব্যবহার করে কুয়েরি এক্সিকিউট করা হয়েছে।
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM employees");
executeQuery()
: এটি SELECT কুয়েরির জন্য ব্যবহৃত হয়, যা ডেটা বের করে এবং ResultSet ফেরত দেয়।executeUpdate()
: এটি INSERT, UPDATE, বা DELETE কুয়েরির জন্য ব্যবহৃত হয়, যেগুলো ডেটাবেজে পরিবর্তন করে।PreparedStatement
ব্যবহারে নিরাপদ এবং কার্যকরী SQL কুয়েরি তৈরি করা যায়, যা SQL ইনজেকশন প্রতিরোধ করে।
String sql = "INSERT INTO employees (id, name, age) VALUES (?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
// প্যারামিটার সেট করা
pstmt.setInt(1, 1); // id = 1
pstmt.setString(2, "John Doe"); // name = "John Doe"
pstmt.setInt(3, 30); // age = 30
// কুয়েরি এক্সিকিউট করা
pstmt.executeUpdate();
setInt()
, setString()
ইত্যাদি মেথড ব্যবহার করে প্যারামিটারগুলোর মান সেট করা হয়।executeUpdate()
কুয়েরি এক্সিকিউট করে ডেটাবেজে পরিবর্তন আনে (যেমন, ইনসার্ট, আপডেট, ডিলিট)।String sql = "INSERT INTO employees (id, name, age) VALUES (?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 2);
pstmt.setString(2, "Jane Smith");
pstmt.setInt(3, 28);
pstmt.executeUpdate();
String sql = "UPDATE employees SET age = ? WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 29); // নতুন বয়স
pstmt.setInt(2, 2); // id = 2
pstmt.executeUpdate();
String sql = "DELETE FROM employees WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 2); // id = 2
pstmt.executeUpdate();
JDBC তে ডেটাবেজের মধ্যে ট্রানজ্যাকশন ম্যানেজমেন্ট পরিচালনা করতে commit()
এবং rollback()
ব্যবহৃত হয়।
conn.setAutoCommit(false); // অটোমেটিক কমিট বন্ধ করা
try {
// একাধিক অপারেশন
PreparedStatement pstmt1 = conn.prepareStatement("UPDATE employees SET age = ? WHERE id = ?");
pstmt1.setInt(1, 35);
pstmt1.setInt(2, 1);
pstmt1.executeUpdate();
PreparedStatement pstmt2 = conn.prepareStatement("INSERT INTO employees (id, name, age) VALUES (?, ?, ?)");
pstmt2.setInt(1, 3);
pstmt2.setString(2, "Alice Brown");
pstmt2.setInt(3, 40);
pstmt2.executeUpdate();
conn.commit(); // ট্রানজ্যাকশন কমিট করা
} catch (SQLException e) {
conn.rollback(); // সমস্যা হলে রোলব্যাক করা
}
এখানে:
setAutoCommit(false)
: ডিফল্টভাবে, JDBC ট্রানজ্যাকশনগুলো অটোমেটিক্যালি কমিট করে, কিন্তু setAutoCommit(false)
দিয়ে এটি বন্ধ করা হয় এবং ট্রানজ্যাকশন পরিচালনা করা হয়।commit()
: ট্রানজ্যাকশন কমিট করে সমস্ত পরিবর্তন ডেটাবেজে স্থায়ী করে।rollback()
: কোনো ত্রুটি হলে ট্রানজ্যাকশন রোলব্যাক করে এবং পূর্বের অবস্থা ফিরিয়ে নেয়।JDBC-এর মাধ্যমে H2 ডেটাবেজে সহজেই সংযোগ স্থাপন করা যায় এবং Java অ্যাপ্লিকেশন থেকে ডেটাবেজ অপারেশনগুলি পরিচালনা করা যায়। JDBC একটি শক্তিশালী API, যা ডেটাবেজ অ্যাক্সেস এবং ম্যানিপুলেশনের জন্য ব্যবহৃত হয়।
common.read_more